↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
ms_in(.(X, .(Y, Xs)), Ys) → U1(X, Y, Xs, Ys, split_in(.(X, .(Y, Xs)), X1s, X2s))
split_in(.(X, Xs), .(X, Ys), Zs) → U5(X, Xs, Ys, Zs, split_in(Xs, Zs, Ys))
split_in([], [], []) → split_out([], [], [])
U5(X, Xs, Ys, Zs, split_out(Xs, Zs, Ys)) → split_out(.(X, Xs), .(X, Ys), Zs)
U1(X, Y, Xs, Ys, split_out(.(X, .(Y, Xs)), X1s, X2s)) → U2(X, Y, Xs, Ys, X2s, ms_in(X1s, Y1s))
ms_in(.(X, []), .(X, [])) → ms_out(.(X, []), .(X, []))
ms_in([], []) → ms_out([], [])
U2(X, Y, Xs, Ys, X2s, ms_out(X1s, Y1s)) → U3(X, Y, Xs, Ys, Y1s, ms_in(X2s, Y2s))
U3(X, Y, Xs, Ys, Y1s, ms_out(X2s, Y2s)) → U4(X, Y, Xs, Ys, merge_in(Y1s, Y2s, Ys))
merge_in(.(X, Xs), .(Y, Ys), .(Y, Zs)) → U8(X, Xs, Y, Ys, Zs, less_in(Y, X))
less_in(s(X), s(Y)) → U10(X, Y, less_in(X, Y))
less_in(0, s(X)) → less_out(0, s(X))
U10(X, Y, less_out(X, Y)) → less_out(s(X), s(Y))
U8(X, Xs, Y, Ys, Zs, less_out(Y, X)) → U9(X, Xs, Y, Ys, Zs, merge_in(.(X, Xs), Ys, Zs))
merge_in(.(X, Xs), .(Y, Ys), .(X, Zs)) → U6(X, Xs, Y, Ys, Zs, less_in(X, s(Y)))
U6(X, Xs, Y, Ys, Zs, less_out(X, s(Y))) → U7(X, Xs, Y, Ys, Zs, merge_in(Xs, .(Y, Ys), Zs))
merge_in(Xs, [], Xs) → merge_out(Xs, [], Xs)
merge_in([], Xs, Xs) → merge_out([], Xs, Xs)
U7(X, Xs, Y, Ys, Zs, merge_out(Xs, .(Y, Ys), Zs)) → merge_out(.(X, Xs), .(Y, Ys), .(X, Zs))
U9(X, Xs, Y, Ys, Zs, merge_out(.(X, Xs), Ys, Zs)) → merge_out(.(X, Xs), .(Y, Ys), .(Y, Zs))
U4(X, Y, Xs, Ys, merge_out(Y1s, Y2s, Ys)) → ms_out(.(X, .(Y, Xs)), Ys)
Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PrologToPiTRSProof
ms_in(.(X, .(Y, Xs)), Ys) → U1(X, Y, Xs, Ys, split_in(.(X, .(Y, Xs)), X1s, X2s))
split_in(.(X, Xs), .(X, Ys), Zs) → U5(X, Xs, Ys, Zs, split_in(Xs, Zs, Ys))
split_in([], [], []) → split_out([], [], [])
U5(X, Xs, Ys, Zs, split_out(Xs, Zs, Ys)) → split_out(.(X, Xs), .(X, Ys), Zs)
U1(X, Y, Xs, Ys, split_out(.(X, .(Y, Xs)), X1s, X2s)) → U2(X, Y, Xs, Ys, X2s, ms_in(X1s, Y1s))
ms_in(.(X, []), .(X, [])) → ms_out(.(X, []), .(X, []))
ms_in([], []) → ms_out([], [])
U2(X, Y, Xs, Ys, X2s, ms_out(X1s, Y1s)) → U3(X, Y, Xs, Ys, Y1s, ms_in(X2s, Y2s))
U3(X, Y, Xs, Ys, Y1s, ms_out(X2s, Y2s)) → U4(X, Y, Xs, Ys, merge_in(Y1s, Y2s, Ys))
merge_in(.(X, Xs), .(Y, Ys), .(Y, Zs)) → U8(X, Xs, Y, Ys, Zs, less_in(Y, X))
less_in(s(X), s(Y)) → U10(X, Y, less_in(X, Y))
less_in(0, s(X)) → less_out(0, s(X))
U10(X, Y, less_out(X, Y)) → less_out(s(X), s(Y))
U8(X, Xs, Y, Ys, Zs, less_out(Y, X)) → U9(X, Xs, Y, Ys, Zs, merge_in(.(X, Xs), Ys, Zs))
merge_in(.(X, Xs), .(Y, Ys), .(X, Zs)) → U6(X, Xs, Y, Ys, Zs, less_in(X, s(Y)))
U6(X, Xs, Y, Ys, Zs, less_out(X, s(Y))) → U7(X, Xs, Y, Ys, Zs, merge_in(Xs, .(Y, Ys), Zs))
merge_in(Xs, [], Xs) → merge_out(Xs, [], Xs)
merge_in([], Xs, Xs) → merge_out([], Xs, Xs)
U7(X, Xs, Y, Ys, Zs, merge_out(Xs, .(Y, Ys), Zs)) → merge_out(.(X, Xs), .(Y, Ys), .(X, Zs))
U9(X, Xs, Y, Ys, Zs, merge_out(.(X, Xs), Ys, Zs)) → merge_out(.(X, Xs), .(Y, Ys), .(Y, Zs))
U4(X, Y, Xs, Ys, merge_out(Y1s, Y2s, Ys)) → ms_out(.(X, .(Y, Xs)), Ys)
MS_IN(.(X, .(Y, Xs)), Ys) → U11(X, Y, Xs, Ys, split_in(.(X, .(Y, Xs)), X1s, X2s))
MS_IN(.(X, .(Y, Xs)), Ys) → SPLIT_IN(.(X, .(Y, Xs)), X1s, X2s)
SPLIT_IN(.(X, Xs), .(X, Ys), Zs) → U51(X, Xs, Ys, Zs, split_in(Xs, Zs, Ys))
SPLIT_IN(.(X, Xs), .(X, Ys), Zs) → SPLIT_IN(Xs, Zs, Ys)
U11(X, Y, Xs, Ys, split_out(.(X, .(Y, Xs)), X1s, X2s)) → U21(X, Y, Xs, Ys, X2s, ms_in(X1s, Y1s))
U11(X, Y, Xs, Ys, split_out(.(X, .(Y, Xs)), X1s, X2s)) → MS_IN(X1s, Y1s)
U21(X, Y, Xs, Ys, X2s, ms_out(X1s, Y1s)) → U31(X, Y, Xs, Ys, Y1s, ms_in(X2s, Y2s))
U21(X, Y, Xs, Ys, X2s, ms_out(X1s, Y1s)) → MS_IN(X2s, Y2s)
U31(X, Y, Xs, Ys, Y1s, ms_out(X2s, Y2s)) → U41(X, Y, Xs, Ys, merge_in(Y1s, Y2s, Ys))
U31(X, Y, Xs, Ys, Y1s, ms_out(X2s, Y2s)) → MERGE_IN(Y1s, Y2s, Ys)
MERGE_IN(.(X, Xs), .(Y, Ys), .(Y, Zs)) → U81(X, Xs, Y, Ys, Zs, less_in(Y, X))
MERGE_IN(.(X, Xs), .(Y, Ys), .(Y, Zs)) → LESS_IN(Y, X)
LESS_IN(s(X), s(Y)) → U101(X, Y, less_in(X, Y))
LESS_IN(s(X), s(Y)) → LESS_IN(X, Y)
U81(X, Xs, Y, Ys, Zs, less_out(Y, X)) → U91(X, Xs, Y, Ys, Zs, merge_in(.(X, Xs), Ys, Zs))
U81(X, Xs, Y, Ys, Zs, less_out(Y, X)) → MERGE_IN(.(X, Xs), Ys, Zs)
MERGE_IN(.(X, Xs), .(Y, Ys), .(X, Zs)) → U61(X, Xs, Y, Ys, Zs, less_in(X, s(Y)))
MERGE_IN(.(X, Xs), .(Y, Ys), .(X, Zs)) → LESS_IN(X, s(Y))
U61(X, Xs, Y, Ys, Zs, less_out(X, s(Y))) → U71(X, Xs, Y, Ys, Zs, merge_in(Xs, .(Y, Ys), Zs))
U61(X, Xs, Y, Ys, Zs, less_out(X, s(Y))) → MERGE_IN(Xs, .(Y, Ys), Zs)
ms_in(.(X, .(Y, Xs)), Ys) → U1(X, Y, Xs, Ys, split_in(.(X, .(Y, Xs)), X1s, X2s))
split_in(.(X, Xs), .(X, Ys), Zs) → U5(X, Xs, Ys, Zs, split_in(Xs, Zs, Ys))
split_in([], [], []) → split_out([], [], [])
U5(X, Xs, Ys, Zs, split_out(Xs, Zs, Ys)) → split_out(.(X, Xs), .(X, Ys), Zs)
U1(X, Y, Xs, Ys, split_out(.(X, .(Y, Xs)), X1s, X2s)) → U2(X, Y, Xs, Ys, X2s, ms_in(X1s, Y1s))
ms_in(.(X, []), .(X, [])) → ms_out(.(X, []), .(X, []))
ms_in([], []) → ms_out([], [])
U2(X, Y, Xs, Ys, X2s, ms_out(X1s, Y1s)) → U3(X, Y, Xs, Ys, Y1s, ms_in(X2s, Y2s))
U3(X, Y, Xs, Ys, Y1s, ms_out(X2s, Y2s)) → U4(X, Y, Xs, Ys, merge_in(Y1s, Y2s, Ys))
merge_in(.(X, Xs), .(Y, Ys), .(Y, Zs)) → U8(X, Xs, Y, Ys, Zs, less_in(Y, X))
less_in(s(X), s(Y)) → U10(X, Y, less_in(X, Y))
less_in(0, s(X)) → less_out(0, s(X))
U10(X, Y, less_out(X, Y)) → less_out(s(X), s(Y))
U8(X, Xs, Y, Ys, Zs, less_out(Y, X)) → U9(X, Xs, Y, Ys, Zs, merge_in(.(X, Xs), Ys, Zs))
merge_in(.(X, Xs), .(Y, Ys), .(X, Zs)) → U6(X, Xs, Y, Ys, Zs, less_in(X, s(Y)))
U6(X, Xs, Y, Ys, Zs, less_out(X, s(Y))) → U7(X, Xs, Y, Ys, Zs, merge_in(Xs, .(Y, Ys), Zs))
merge_in(Xs, [], Xs) → merge_out(Xs, [], Xs)
merge_in([], Xs, Xs) → merge_out([], Xs, Xs)
U7(X, Xs, Y, Ys, Zs, merge_out(Xs, .(Y, Ys), Zs)) → merge_out(.(X, Xs), .(Y, Ys), .(X, Zs))
U9(X, Xs, Y, Ys, Zs, merge_out(.(X, Xs), Ys, Zs)) → merge_out(.(X, Xs), .(Y, Ys), .(Y, Zs))
U4(X, Y, Xs, Ys, merge_out(Y1s, Y2s, Ys)) → ms_out(.(X, .(Y, Xs)), Ys)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ PrologToPiTRSProof
MS_IN(.(X, .(Y, Xs)), Ys) → U11(X, Y, Xs, Ys, split_in(.(X, .(Y, Xs)), X1s, X2s))
MS_IN(.(X, .(Y, Xs)), Ys) → SPLIT_IN(.(X, .(Y, Xs)), X1s, X2s)
SPLIT_IN(.(X, Xs), .(X, Ys), Zs) → U51(X, Xs, Ys, Zs, split_in(Xs, Zs, Ys))
SPLIT_IN(.(X, Xs), .(X, Ys), Zs) → SPLIT_IN(Xs, Zs, Ys)
U11(X, Y, Xs, Ys, split_out(.(X, .(Y, Xs)), X1s, X2s)) → U21(X, Y, Xs, Ys, X2s, ms_in(X1s, Y1s))
U11(X, Y, Xs, Ys, split_out(.(X, .(Y, Xs)), X1s, X2s)) → MS_IN(X1s, Y1s)
U21(X, Y, Xs, Ys, X2s, ms_out(X1s, Y1s)) → U31(X, Y, Xs, Ys, Y1s, ms_in(X2s, Y2s))
U21(X, Y, Xs, Ys, X2s, ms_out(X1s, Y1s)) → MS_IN(X2s, Y2s)
U31(X, Y, Xs, Ys, Y1s, ms_out(X2s, Y2s)) → U41(X, Y, Xs, Ys, merge_in(Y1s, Y2s, Ys))
U31(X, Y, Xs, Ys, Y1s, ms_out(X2s, Y2s)) → MERGE_IN(Y1s, Y2s, Ys)
MERGE_IN(.(X, Xs), .(Y, Ys), .(Y, Zs)) → U81(X, Xs, Y, Ys, Zs, less_in(Y, X))
MERGE_IN(.(X, Xs), .(Y, Ys), .(Y, Zs)) → LESS_IN(Y, X)
LESS_IN(s(X), s(Y)) → U101(X, Y, less_in(X, Y))
LESS_IN(s(X), s(Y)) → LESS_IN(X, Y)
U81(X, Xs, Y, Ys, Zs, less_out(Y, X)) → U91(X, Xs, Y, Ys, Zs, merge_in(.(X, Xs), Ys, Zs))
U81(X, Xs, Y, Ys, Zs, less_out(Y, X)) → MERGE_IN(.(X, Xs), Ys, Zs)
MERGE_IN(.(X, Xs), .(Y, Ys), .(X, Zs)) → U61(X, Xs, Y, Ys, Zs, less_in(X, s(Y)))
MERGE_IN(.(X, Xs), .(Y, Ys), .(X, Zs)) → LESS_IN(X, s(Y))
U61(X, Xs, Y, Ys, Zs, less_out(X, s(Y))) → U71(X, Xs, Y, Ys, Zs, merge_in(Xs, .(Y, Ys), Zs))
U61(X, Xs, Y, Ys, Zs, less_out(X, s(Y))) → MERGE_IN(Xs, .(Y, Ys), Zs)
ms_in(.(X, .(Y, Xs)), Ys) → U1(X, Y, Xs, Ys, split_in(.(X, .(Y, Xs)), X1s, X2s))
split_in(.(X, Xs), .(X, Ys), Zs) → U5(X, Xs, Ys, Zs, split_in(Xs, Zs, Ys))
split_in([], [], []) → split_out([], [], [])
U5(X, Xs, Ys, Zs, split_out(Xs, Zs, Ys)) → split_out(.(X, Xs), .(X, Ys), Zs)
U1(X, Y, Xs, Ys, split_out(.(X, .(Y, Xs)), X1s, X2s)) → U2(X, Y, Xs, Ys, X2s, ms_in(X1s, Y1s))
ms_in(.(X, []), .(X, [])) → ms_out(.(X, []), .(X, []))
ms_in([], []) → ms_out([], [])
U2(X, Y, Xs, Ys, X2s, ms_out(X1s, Y1s)) → U3(X, Y, Xs, Ys, Y1s, ms_in(X2s, Y2s))
U3(X, Y, Xs, Ys, Y1s, ms_out(X2s, Y2s)) → U4(X, Y, Xs, Ys, merge_in(Y1s, Y2s, Ys))
merge_in(.(X, Xs), .(Y, Ys), .(Y, Zs)) → U8(X, Xs, Y, Ys, Zs, less_in(Y, X))
less_in(s(X), s(Y)) → U10(X, Y, less_in(X, Y))
less_in(0, s(X)) → less_out(0, s(X))
U10(X, Y, less_out(X, Y)) → less_out(s(X), s(Y))
U8(X, Xs, Y, Ys, Zs, less_out(Y, X)) → U9(X, Xs, Y, Ys, Zs, merge_in(.(X, Xs), Ys, Zs))
merge_in(.(X, Xs), .(Y, Ys), .(X, Zs)) → U6(X, Xs, Y, Ys, Zs, less_in(X, s(Y)))
U6(X, Xs, Y, Ys, Zs, less_out(X, s(Y))) → U7(X, Xs, Y, Ys, Zs, merge_in(Xs, .(Y, Ys), Zs))
merge_in(Xs, [], Xs) → merge_out(Xs, [], Xs)
merge_in([], Xs, Xs) → merge_out([], Xs, Xs)
U7(X, Xs, Y, Ys, Zs, merge_out(Xs, .(Y, Ys), Zs)) → merge_out(.(X, Xs), .(Y, Ys), .(X, Zs))
U9(X, Xs, Y, Ys, Zs, merge_out(.(X, Xs), Ys, Zs)) → merge_out(.(X, Xs), .(Y, Ys), .(Y, Zs))
U4(X, Y, Xs, Ys, merge_out(Y1s, Y2s, Ys)) → ms_out(.(X, .(Y, Xs)), Ys)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDP
↳ PiDP
↳ PrologToPiTRSProof
LESS_IN(s(X), s(Y)) → LESS_IN(X, Y)
ms_in(.(X, .(Y, Xs)), Ys) → U1(X, Y, Xs, Ys, split_in(.(X, .(Y, Xs)), X1s, X2s))
split_in(.(X, Xs), .(X, Ys), Zs) → U5(X, Xs, Ys, Zs, split_in(Xs, Zs, Ys))
split_in([], [], []) → split_out([], [], [])
U5(X, Xs, Ys, Zs, split_out(Xs, Zs, Ys)) → split_out(.(X, Xs), .(X, Ys), Zs)
U1(X, Y, Xs, Ys, split_out(.(X, .(Y, Xs)), X1s, X2s)) → U2(X, Y, Xs, Ys, X2s, ms_in(X1s, Y1s))
ms_in(.(X, []), .(X, [])) → ms_out(.(X, []), .(X, []))
ms_in([], []) → ms_out([], [])
U2(X, Y, Xs, Ys, X2s, ms_out(X1s, Y1s)) → U3(X, Y, Xs, Ys, Y1s, ms_in(X2s, Y2s))
U3(X, Y, Xs, Ys, Y1s, ms_out(X2s, Y2s)) → U4(X, Y, Xs, Ys, merge_in(Y1s, Y2s, Ys))
merge_in(.(X, Xs), .(Y, Ys), .(Y, Zs)) → U8(X, Xs, Y, Ys, Zs, less_in(Y, X))
less_in(s(X), s(Y)) → U10(X, Y, less_in(X, Y))
less_in(0, s(X)) → less_out(0, s(X))
U10(X, Y, less_out(X, Y)) → less_out(s(X), s(Y))
U8(X, Xs, Y, Ys, Zs, less_out(Y, X)) → U9(X, Xs, Y, Ys, Zs, merge_in(.(X, Xs), Ys, Zs))
merge_in(.(X, Xs), .(Y, Ys), .(X, Zs)) → U6(X, Xs, Y, Ys, Zs, less_in(X, s(Y)))
U6(X, Xs, Y, Ys, Zs, less_out(X, s(Y))) → U7(X, Xs, Y, Ys, Zs, merge_in(Xs, .(Y, Ys), Zs))
merge_in(Xs, [], Xs) → merge_out(Xs, [], Xs)
merge_in([], Xs, Xs) → merge_out([], Xs, Xs)
U7(X, Xs, Y, Ys, Zs, merge_out(Xs, .(Y, Ys), Zs)) → merge_out(.(X, Xs), .(Y, Ys), .(X, Zs))
U9(X, Xs, Y, Ys, Zs, merge_out(.(X, Xs), Ys, Zs)) → merge_out(.(X, Xs), .(Y, Ys), .(Y, Zs))
U4(X, Y, Xs, Ys, merge_out(Y1s, Y2s, Ys)) → ms_out(.(X, .(Y, Xs)), Ys)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
↳ PiDP
↳ PiDP
↳ PrologToPiTRSProof
LESS_IN(s(X), s(Y)) → LESS_IN(X, Y)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ NonTerminationProof
↳ PiDP
↳ PiDP
↳ PiDP
↳ PrologToPiTRSProof
LESS_IN → LESS_IN
LESS_IN → LESS_IN
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDP
↳ PrologToPiTRSProof
MERGE_IN(.(X, Xs), .(Y, Ys), .(X, Zs)) → U61(X, Xs, Y, Ys, Zs, less_in(X, s(Y)))
MERGE_IN(.(X, Xs), .(Y, Ys), .(Y, Zs)) → U81(X, Xs, Y, Ys, Zs, less_in(Y, X))
U61(X, Xs, Y, Ys, Zs, less_out(X, s(Y))) → MERGE_IN(Xs, .(Y, Ys), Zs)
U81(X, Xs, Y, Ys, Zs, less_out(Y, X)) → MERGE_IN(.(X, Xs), Ys, Zs)
ms_in(.(X, .(Y, Xs)), Ys) → U1(X, Y, Xs, Ys, split_in(.(X, .(Y, Xs)), X1s, X2s))
split_in(.(X, Xs), .(X, Ys), Zs) → U5(X, Xs, Ys, Zs, split_in(Xs, Zs, Ys))
split_in([], [], []) → split_out([], [], [])
U5(X, Xs, Ys, Zs, split_out(Xs, Zs, Ys)) → split_out(.(X, Xs), .(X, Ys), Zs)
U1(X, Y, Xs, Ys, split_out(.(X, .(Y, Xs)), X1s, X2s)) → U2(X, Y, Xs, Ys, X2s, ms_in(X1s, Y1s))
ms_in(.(X, []), .(X, [])) → ms_out(.(X, []), .(X, []))
ms_in([], []) → ms_out([], [])
U2(X, Y, Xs, Ys, X2s, ms_out(X1s, Y1s)) → U3(X, Y, Xs, Ys, Y1s, ms_in(X2s, Y2s))
U3(X, Y, Xs, Ys, Y1s, ms_out(X2s, Y2s)) → U4(X, Y, Xs, Ys, merge_in(Y1s, Y2s, Ys))
merge_in(.(X, Xs), .(Y, Ys), .(Y, Zs)) → U8(X, Xs, Y, Ys, Zs, less_in(Y, X))
less_in(s(X), s(Y)) → U10(X, Y, less_in(X, Y))
less_in(0, s(X)) → less_out(0, s(X))
U10(X, Y, less_out(X, Y)) → less_out(s(X), s(Y))
U8(X, Xs, Y, Ys, Zs, less_out(Y, X)) → U9(X, Xs, Y, Ys, Zs, merge_in(.(X, Xs), Ys, Zs))
merge_in(.(X, Xs), .(Y, Ys), .(X, Zs)) → U6(X, Xs, Y, Ys, Zs, less_in(X, s(Y)))
U6(X, Xs, Y, Ys, Zs, less_out(X, s(Y))) → U7(X, Xs, Y, Ys, Zs, merge_in(Xs, .(Y, Ys), Zs))
merge_in(Xs, [], Xs) → merge_out(Xs, [], Xs)
merge_in([], Xs, Xs) → merge_out([], Xs, Xs)
U7(X, Xs, Y, Ys, Zs, merge_out(Xs, .(Y, Ys), Zs)) → merge_out(.(X, Xs), .(Y, Ys), .(X, Zs))
U9(X, Xs, Y, Ys, Zs, merge_out(.(X, Xs), Ys, Zs)) → merge_out(.(X, Xs), .(Y, Ys), .(Y, Zs))
U4(X, Y, Xs, Ys, merge_out(Y1s, Y2s, Ys)) → ms_out(.(X, .(Y, Xs)), Ys)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
↳ PiDP
↳ PrologToPiTRSProof
MERGE_IN(.(X, Xs), .(Y, Ys), .(X, Zs)) → U61(X, Xs, Y, Ys, Zs, less_in(X, s(Y)))
MERGE_IN(.(X, Xs), .(Y, Ys), .(Y, Zs)) → U81(X, Xs, Y, Ys, Zs, less_in(Y, X))
U61(X, Xs, Y, Ys, Zs, less_out(X, s(Y))) → MERGE_IN(Xs, .(Y, Ys), Zs)
U81(X, Xs, Y, Ys, Zs, less_out(Y, X)) → MERGE_IN(.(X, Xs), Ys, Zs)
less_in(s(X), s(Y)) → U10(X, Y, less_in(X, Y))
less_in(0, s(X)) → less_out(0, s(X))
U10(X, Y, less_out(X, Y)) → less_out(s(X), s(Y))
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ PiDP
↳ PiDP
↳ PrologToPiTRSProof
U61(less_out(X)) → MERGE_IN
U81(less_out(Y)) → MERGE_IN
MERGE_IN → U81(less_in)
MERGE_IN → U61(less_in)
less_in → U10(less_in)
less_in → less_out(0)
U10(less_out(X)) → less_out(s(X))
less_in
U10(x0)
MERGE_IN → U61(less_out(0))
MERGE_IN → U61(U10(less_in))
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ PiDP
↳ PiDP
↳ PrologToPiTRSProof
MERGE_IN → U61(less_out(0))
U61(less_out(X)) → MERGE_IN
MERGE_IN → U61(U10(less_in))
MERGE_IN → U81(less_in)
U81(less_out(Y)) → MERGE_IN
less_in → U10(less_in)
less_in → less_out(0)
U10(less_out(X)) → less_out(s(X))
less_in
U10(x0)
MERGE_IN → U81(less_out(0))
MERGE_IN → U81(U10(less_in))
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ NonTerminationProof
↳ PiDP
↳ PiDP
↳ PrologToPiTRSProof
U61(less_out(X)) → MERGE_IN
MERGE_IN → U61(less_out(0))
MERGE_IN → U61(U10(less_in))
MERGE_IN → U81(less_out(0))
MERGE_IN → U81(U10(less_in))
U81(less_out(Y)) → MERGE_IN
less_in → U10(less_in)
less_in → less_out(0)
U10(less_out(X)) → less_out(s(X))
less_in
U10(x0)
U61(less_out(X)) → MERGE_IN
MERGE_IN → U61(less_out(0))
MERGE_IN → U61(U10(less_in))
MERGE_IN → U81(less_out(0))
MERGE_IN → U81(U10(less_in))
U81(less_out(Y)) → MERGE_IN
less_in → U10(less_in)
less_in → less_out(0)
U10(less_out(X)) → less_out(s(X))
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PrologToPiTRSProof
SPLIT_IN(.(X, Xs), .(X, Ys), Zs) → SPLIT_IN(Xs, Zs, Ys)
ms_in(.(X, .(Y, Xs)), Ys) → U1(X, Y, Xs, Ys, split_in(.(X, .(Y, Xs)), X1s, X2s))
split_in(.(X, Xs), .(X, Ys), Zs) → U5(X, Xs, Ys, Zs, split_in(Xs, Zs, Ys))
split_in([], [], []) → split_out([], [], [])
U5(X, Xs, Ys, Zs, split_out(Xs, Zs, Ys)) → split_out(.(X, Xs), .(X, Ys), Zs)
U1(X, Y, Xs, Ys, split_out(.(X, .(Y, Xs)), X1s, X2s)) → U2(X, Y, Xs, Ys, X2s, ms_in(X1s, Y1s))
ms_in(.(X, []), .(X, [])) → ms_out(.(X, []), .(X, []))
ms_in([], []) → ms_out([], [])
U2(X, Y, Xs, Ys, X2s, ms_out(X1s, Y1s)) → U3(X, Y, Xs, Ys, Y1s, ms_in(X2s, Y2s))
U3(X, Y, Xs, Ys, Y1s, ms_out(X2s, Y2s)) → U4(X, Y, Xs, Ys, merge_in(Y1s, Y2s, Ys))
merge_in(.(X, Xs), .(Y, Ys), .(Y, Zs)) → U8(X, Xs, Y, Ys, Zs, less_in(Y, X))
less_in(s(X), s(Y)) → U10(X, Y, less_in(X, Y))
less_in(0, s(X)) → less_out(0, s(X))
U10(X, Y, less_out(X, Y)) → less_out(s(X), s(Y))
U8(X, Xs, Y, Ys, Zs, less_out(Y, X)) → U9(X, Xs, Y, Ys, Zs, merge_in(.(X, Xs), Ys, Zs))
merge_in(.(X, Xs), .(Y, Ys), .(X, Zs)) → U6(X, Xs, Y, Ys, Zs, less_in(X, s(Y)))
U6(X, Xs, Y, Ys, Zs, less_out(X, s(Y))) → U7(X, Xs, Y, Ys, Zs, merge_in(Xs, .(Y, Ys), Zs))
merge_in(Xs, [], Xs) → merge_out(Xs, [], Xs)
merge_in([], Xs, Xs) → merge_out([], Xs, Xs)
U7(X, Xs, Y, Ys, Zs, merge_out(Xs, .(Y, Ys), Zs)) → merge_out(.(X, Xs), .(Y, Ys), .(X, Zs))
U9(X, Xs, Y, Ys, Zs, merge_out(.(X, Xs), Ys, Zs)) → merge_out(.(X, Xs), .(Y, Ys), .(Y, Zs))
U4(X, Y, Xs, Ys, merge_out(Y1s, Y2s, Ys)) → ms_out(.(X, .(Y, Xs)), Ys)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
↳ PrologToPiTRSProof
SPLIT_IN(.(X, Xs), .(X, Ys), Zs) → SPLIT_IN(Xs, Zs, Ys)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ NonTerminationProof
↳ PiDP
↳ PrologToPiTRSProof
SPLIT_IN → SPLIT_IN
SPLIT_IN → SPLIT_IN
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDPToQDPProof
↳ PrologToPiTRSProof
U11(X, Y, Xs, Ys, split_out(.(X, .(Y, Xs)), X1s, X2s)) → U21(X, Y, Xs, Ys, X2s, ms_in(X1s, Y1s))
U11(X, Y, Xs, Ys, split_out(.(X, .(Y, Xs)), X1s, X2s)) → MS_IN(X1s, Y1s)
MS_IN(.(X, .(Y, Xs)), Ys) → U11(X, Y, Xs, Ys, split_in(.(X, .(Y, Xs)), X1s, X2s))
U21(X, Y, Xs, Ys, X2s, ms_out(X1s, Y1s)) → MS_IN(X2s, Y2s)
ms_in(.(X, .(Y, Xs)), Ys) → U1(X, Y, Xs, Ys, split_in(.(X, .(Y, Xs)), X1s, X2s))
split_in(.(X, Xs), .(X, Ys), Zs) → U5(X, Xs, Ys, Zs, split_in(Xs, Zs, Ys))
split_in([], [], []) → split_out([], [], [])
U5(X, Xs, Ys, Zs, split_out(Xs, Zs, Ys)) → split_out(.(X, Xs), .(X, Ys), Zs)
U1(X, Y, Xs, Ys, split_out(.(X, .(Y, Xs)), X1s, X2s)) → U2(X, Y, Xs, Ys, X2s, ms_in(X1s, Y1s))
ms_in(.(X, []), .(X, [])) → ms_out(.(X, []), .(X, []))
ms_in([], []) → ms_out([], [])
U2(X, Y, Xs, Ys, X2s, ms_out(X1s, Y1s)) → U3(X, Y, Xs, Ys, Y1s, ms_in(X2s, Y2s))
U3(X, Y, Xs, Ys, Y1s, ms_out(X2s, Y2s)) → U4(X, Y, Xs, Ys, merge_in(Y1s, Y2s, Ys))
merge_in(.(X, Xs), .(Y, Ys), .(Y, Zs)) → U8(X, Xs, Y, Ys, Zs, less_in(Y, X))
less_in(s(X), s(Y)) → U10(X, Y, less_in(X, Y))
less_in(0, s(X)) → less_out(0, s(X))
U10(X, Y, less_out(X, Y)) → less_out(s(X), s(Y))
U8(X, Xs, Y, Ys, Zs, less_out(Y, X)) → U9(X, Xs, Y, Ys, Zs, merge_in(.(X, Xs), Ys, Zs))
merge_in(.(X, Xs), .(Y, Ys), .(X, Zs)) → U6(X, Xs, Y, Ys, Zs, less_in(X, s(Y)))
U6(X, Xs, Y, Ys, Zs, less_out(X, s(Y))) → U7(X, Xs, Y, Ys, Zs, merge_in(Xs, .(Y, Ys), Zs))
merge_in(Xs, [], Xs) → merge_out(Xs, [], Xs)
merge_in([], Xs, Xs) → merge_out([], Xs, Xs)
U7(X, Xs, Y, Ys, Zs, merge_out(Xs, .(Y, Ys), Zs)) → merge_out(.(X, Xs), .(Y, Ys), .(X, Zs))
U9(X, Xs, Y, Ys, Zs, merge_out(.(X, Xs), Ys, Zs)) → merge_out(.(X, Xs), .(Y, Ys), .(Y, Zs))
U4(X, Y, Xs, Ys, merge_out(Y1s, Y2s, Ys)) → ms_out(.(X, .(Y, Xs)), Ys)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ PrologToPiTRSProof
U21(ms_out) → MS_IN
U11(split_out) → U21(ms_in)
MS_IN → U11(split_in)
U11(split_out) → MS_IN
ms_in → U1(split_in)
split_in → U5(split_in)
split_in → split_out
U5(split_out) → split_out
U1(split_out) → U2(ms_in)
ms_in → ms_out
U2(ms_out) → U3(ms_in)
U3(ms_out) → U4(merge_in)
merge_in → U8(less_in)
less_in → U10(less_in)
less_in → less_out(0)
U10(less_out(X)) → less_out(s(X))
U8(less_out(Y)) → U9(merge_in)
merge_in → U6(less_in)
U6(less_out(X)) → U7(merge_in)
merge_in → merge_out
U7(merge_out) → merge_out
U9(merge_out) → merge_out
U4(merge_out) → ms_out
ms_in
split_in
U5(x0)
U1(x0)
U2(x0)
U3(x0)
merge_in
less_in
U10(x0)
U8(x0)
U6(x0)
U7(x0)
U9(x0)
U4(x0)
U11(split_out) → U21(U1(split_in))
U11(split_out) → U21(ms_out)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ PrologToPiTRSProof
U11(split_out) → U21(U1(split_in))
U21(ms_out) → MS_IN
U11(split_out) → MS_IN
MS_IN → U11(split_in)
U11(split_out) → U21(ms_out)
ms_in → U1(split_in)
split_in → U5(split_in)
split_in → split_out
U5(split_out) → split_out
U1(split_out) → U2(ms_in)
ms_in → ms_out
U2(ms_out) → U3(ms_in)
U3(ms_out) → U4(merge_in)
merge_in → U8(less_in)
less_in → U10(less_in)
less_in → less_out(0)
U10(less_out(X)) → less_out(s(X))
U8(less_out(Y)) → U9(merge_in)
merge_in → U6(less_in)
U6(less_out(X)) → U7(merge_in)
merge_in → merge_out
U7(merge_out) → merge_out
U9(merge_out) → merge_out
U4(merge_out) → ms_out
ms_in
split_in
U5(x0)
U1(x0)
U2(x0)
U3(x0)
merge_in
less_in
U10(x0)
U8(x0)
U6(x0)
U7(x0)
U9(x0)
U4(x0)
MS_IN → U11(U5(split_in))
MS_IN → U11(split_out)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ NonTerminationProof
↳ PrologToPiTRSProof
U11(split_out) → U21(U1(split_in))
MS_IN → U11(split_out)
U21(ms_out) → MS_IN
U11(split_out) → MS_IN
MS_IN → U11(U5(split_in))
U11(split_out) → U21(ms_out)
ms_in → U1(split_in)
split_in → U5(split_in)
split_in → split_out
U5(split_out) → split_out
U1(split_out) → U2(ms_in)
ms_in → ms_out
U2(ms_out) → U3(ms_in)
U3(ms_out) → U4(merge_in)
merge_in → U8(less_in)
less_in → U10(less_in)
less_in → less_out(0)
U10(less_out(X)) → less_out(s(X))
U8(less_out(Y)) → U9(merge_in)
merge_in → U6(less_in)
U6(less_out(X)) → U7(merge_in)
merge_in → merge_out
U7(merge_out) → merge_out
U9(merge_out) → merge_out
U4(merge_out) → ms_out
ms_in
split_in
U5(x0)
U1(x0)
U2(x0)
U3(x0)
merge_in
less_in
U10(x0)
U8(x0)
U6(x0)
U7(x0)
U9(x0)
U4(x0)
U11(split_out) → U21(U1(split_in))
MS_IN → U11(split_out)
U21(ms_out) → MS_IN
U11(split_out) → MS_IN
MS_IN → U11(U5(split_in))
U11(split_out) → U21(ms_out)
ms_in → U1(split_in)
split_in → U5(split_in)
split_in → split_out
U5(split_out) → split_out
U1(split_out) → U2(ms_in)
ms_in → ms_out
U2(ms_out) → U3(ms_in)
U3(ms_out) → U4(merge_in)
merge_in → U8(less_in)
less_in → U10(less_in)
less_in → less_out(0)
U10(less_out(X)) → less_out(s(X))
U8(less_out(Y)) → U9(merge_in)
merge_in → U6(less_in)
U6(less_out(X)) → U7(merge_in)
merge_in → merge_out
U7(merge_out) → merge_out
U9(merge_out) → merge_out
U4(merge_out) → ms_out
ms_in(.(X, .(Y, Xs)), Ys) → U1(X, Y, Xs, Ys, split_in(.(X, .(Y, Xs)), X1s, X2s))
split_in(.(X, Xs), .(X, Ys), Zs) → U5(X, Xs, Ys, Zs, split_in(Xs, Zs, Ys))
split_in([], [], []) → split_out([], [], [])
U5(X, Xs, Ys, Zs, split_out(Xs, Zs, Ys)) → split_out(.(X, Xs), .(X, Ys), Zs)
U1(X, Y, Xs, Ys, split_out(.(X, .(Y, Xs)), X1s, X2s)) → U2(X, Y, Xs, Ys, X2s, ms_in(X1s, Y1s))
ms_in(.(X, []), .(X, [])) → ms_out(.(X, []), .(X, []))
ms_in([], []) → ms_out([], [])
U2(X, Y, Xs, Ys, X2s, ms_out(X1s, Y1s)) → U3(X, Y, Xs, Ys, Y1s, ms_in(X2s, Y2s))
U3(X, Y, Xs, Ys, Y1s, ms_out(X2s, Y2s)) → U4(X, Y, Xs, Ys, merge_in(Y1s, Y2s, Ys))
merge_in(.(X, Xs), .(Y, Ys), .(Y, Zs)) → U8(X, Xs, Y, Ys, Zs, less_in(Y, X))
less_in(s(X), s(Y)) → U10(X, Y, less_in(X, Y))
less_in(0, s(X)) → less_out(0, s(X))
U10(X, Y, less_out(X, Y)) → less_out(s(X), s(Y))
U8(X, Xs, Y, Ys, Zs, less_out(Y, X)) → U9(X, Xs, Y, Ys, Zs, merge_in(.(X, Xs), Ys, Zs))
merge_in(.(X, Xs), .(Y, Ys), .(X, Zs)) → U6(X, Xs, Y, Ys, Zs, less_in(X, s(Y)))
U6(X, Xs, Y, Ys, Zs, less_out(X, s(Y))) → U7(X, Xs, Y, Ys, Zs, merge_in(Xs, .(Y, Ys), Zs))
merge_in(Xs, [], Xs) → merge_out(Xs, [], Xs)
merge_in([], Xs, Xs) → merge_out([], Xs, Xs)
U7(X, Xs, Y, Ys, Zs, merge_out(Xs, .(Y, Ys), Zs)) → merge_out(.(X, Xs), .(Y, Ys), .(X, Zs))
U9(X, Xs, Y, Ys, Zs, merge_out(.(X, Xs), Ys, Zs)) → merge_out(.(X, Xs), .(Y, Ys), .(Y, Zs))
U4(X, Y, Xs, Ys, merge_out(Y1s, Y2s, Ys)) → ms_out(.(X, .(Y, Xs)), Ys)
Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
ms_in(.(X, .(Y, Xs)), Ys) → U1(X, Y, Xs, Ys, split_in(.(X, .(Y, Xs)), X1s, X2s))
split_in(.(X, Xs), .(X, Ys), Zs) → U5(X, Xs, Ys, Zs, split_in(Xs, Zs, Ys))
split_in([], [], []) → split_out([], [], [])
U5(X, Xs, Ys, Zs, split_out(Xs, Zs, Ys)) → split_out(.(X, Xs), .(X, Ys), Zs)
U1(X, Y, Xs, Ys, split_out(.(X, .(Y, Xs)), X1s, X2s)) → U2(X, Y, Xs, Ys, X2s, ms_in(X1s, Y1s))
ms_in(.(X, []), .(X, [])) → ms_out(.(X, []), .(X, []))
ms_in([], []) → ms_out([], [])
U2(X, Y, Xs, Ys, X2s, ms_out(X1s, Y1s)) → U3(X, Y, Xs, Ys, Y1s, ms_in(X2s, Y2s))
U3(X, Y, Xs, Ys, Y1s, ms_out(X2s, Y2s)) → U4(X, Y, Xs, Ys, merge_in(Y1s, Y2s, Ys))
merge_in(.(X, Xs), .(Y, Ys), .(Y, Zs)) → U8(X, Xs, Y, Ys, Zs, less_in(Y, X))
less_in(s(X), s(Y)) → U10(X, Y, less_in(X, Y))
less_in(0, s(X)) → less_out(0, s(X))
U10(X, Y, less_out(X, Y)) → less_out(s(X), s(Y))
U8(X, Xs, Y, Ys, Zs, less_out(Y, X)) → U9(X, Xs, Y, Ys, Zs, merge_in(.(X, Xs), Ys, Zs))
merge_in(.(X, Xs), .(Y, Ys), .(X, Zs)) → U6(X, Xs, Y, Ys, Zs, less_in(X, s(Y)))
U6(X, Xs, Y, Ys, Zs, less_out(X, s(Y))) → U7(X, Xs, Y, Ys, Zs, merge_in(Xs, .(Y, Ys), Zs))
merge_in(Xs, [], Xs) → merge_out(Xs, [], Xs)
merge_in([], Xs, Xs) → merge_out([], Xs, Xs)
U7(X, Xs, Y, Ys, Zs, merge_out(Xs, .(Y, Ys), Zs)) → merge_out(.(X, Xs), .(Y, Ys), .(X, Zs))
U9(X, Xs, Y, Ys, Zs, merge_out(.(X, Xs), Ys, Zs)) → merge_out(.(X, Xs), .(Y, Ys), .(Y, Zs))
U4(X, Y, Xs, Ys, merge_out(Y1s, Y2s, Ys)) → ms_out(.(X, .(Y, Xs)), Ys)
MS_IN(.(X, .(Y, Xs)), Ys) → U11(X, Y, Xs, Ys, split_in(.(X, .(Y, Xs)), X1s, X2s))
MS_IN(.(X, .(Y, Xs)), Ys) → SPLIT_IN(.(X, .(Y, Xs)), X1s, X2s)
SPLIT_IN(.(X, Xs), .(X, Ys), Zs) → U51(X, Xs, Ys, Zs, split_in(Xs, Zs, Ys))
SPLIT_IN(.(X, Xs), .(X, Ys), Zs) → SPLIT_IN(Xs, Zs, Ys)
U11(X, Y, Xs, Ys, split_out(.(X, .(Y, Xs)), X1s, X2s)) → U21(X, Y, Xs, Ys, X2s, ms_in(X1s, Y1s))
U11(X, Y, Xs, Ys, split_out(.(X, .(Y, Xs)), X1s, X2s)) → MS_IN(X1s, Y1s)
U21(X, Y, Xs, Ys, X2s, ms_out(X1s, Y1s)) → U31(X, Y, Xs, Ys, Y1s, ms_in(X2s, Y2s))
U21(X, Y, Xs, Ys, X2s, ms_out(X1s, Y1s)) → MS_IN(X2s, Y2s)
U31(X, Y, Xs, Ys, Y1s, ms_out(X2s, Y2s)) → U41(X, Y, Xs, Ys, merge_in(Y1s, Y2s, Ys))
U31(X, Y, Xs, Ys, Y1s, ms_out(X2s, Y2s)) → MERGE_IN(Y1s, Y2s, Ys)
MERGE_IN(.(X, Xs), .(Y, Ys), .(Y, Zs)) → U81(X, Xs, Y, Ys, Zs, less_in(Y, X))
MERGE_IN(.(X, Xs), .(Y, Ys), .(Y, Zs)) → LESS_IN(Y, X)
LESS_IN(s(X), s(Y)) → U101(X, Y, less_in(X, Y))
LESS_IN(s(X), s(Y)) → LESS_IN(X, Y)
U81(X, Xs, Y, Ys, Zs, less_out(Y, X)) → U91(X, Xs, Y, Ys, Zs, merge_in(.(X, Xs), Ys, Zs))
U81(X, Xs, Y, Ys, Zs, less_out(Y, X)) → MERGE_IN(.(X, Xs), Ys, Zs)
MERGE_IN(.(X, Xs), .(Y, Ys), .(X, Zs)) → U61(X, Xs, Y, Ys, Zs, less_in(X, s(Y)))
MERGE_IN(.(X, Xs), .(Y, Ys), .(X, Zs)) → LESS_IN(X, s(Y))
U61(X, Xs, Y, Ys, Zs, less_out(X, s(Y))) → U71(X, Xs, Y, Ys, Zs, merge_in(Xs, .(Y, Ys), Zs))
U61(X, Xs, Y, Ys, Zs, less_out(X, s(Y))) → MERGE_IN(Xs, .(Y, Ys), Zs)
ms_in(.(X, .(Y, Xs)), Ys) → U1(X, Y, Xs, Ys, split_in(.(X, .(Y, Xs)), X1s, X2s))
split_in(.(X, Xs), .(X, Ys), Zs) → U5(X, Xs, Ys, Zs, split_in(Xs, Zs, Ys))
split_in([], [], []) → split_out([], [], [])
U5(X, Xs, Ys, Zs, split_out(Xs, Zs, Ys)) → split_out(.(X, Xs), .(X, Ys), Zs)
U1(X, Y, Xs, Ys, split_out(.(X, .(Y, Xs)), X1s, X2s)) → U2(X, Y, Xs, Ys, X2s, ms_in(X1s, Y1s))
ms_in(.(X, []), .(X, [])) → ms_out(.(X, []), .(X, []))
ms_in([], []) → ms_out([], [])
U2(X, Y, Xs, Ys, X2s, ms_out(X1s, Y1s)) → U3(X, Y, Xs, Ys, Y1s, ms_in(X2s, Y2s))
U3(X, Y, Xs, Ys, Y1s, ms_out(X2s, Y2s)) → U4(X, Y, Xs, Ys, merge_in(Y1s, Y2s, Ys))
merge_in(.(X, Xs), .(Y, Ys), .(Y, Zs)) → U8(X, Xs, Y, Ys, Zs, less_in(Y, X))
less_in(s(X), s(Y)) → U10(X, Y, less_in(X, Y))
less_in(0, s(X)) → less_out(0, s(X))
U10(X, Y, less_out(X, Y)) → less_out(s(X), s(Y))
U8(X, Xs, Y, Ys, Zs, less_out(Y, X)) → U9(X, Xs, Y, Ys, Zs, merge_in(.(X, Xs), Ys, Zs))
merge_in(.(X, Xs), .(Y, Ys), .(X, Zs)) → U6(X, Xs, Y, Ys, Zs, less_in(X, s(Y)))
U6(X, Xs, Y, Ys, Zs, less_out(X, s(Y))) → U7(X, Xs, Y, Ys, Zs, merge_in(Xs, .(Y, Ys), Zs))
merge_in(Xs, [], Xs) → merge_out(Xs, [], Xs)
merge_in([], Xs, Xs) → merge_out([], Xs, Xs)
U7(X, Xs, Y, Ys, Zs, merge_out(Xs, .(Y, Ys), Zs)) → merge_out(.(X, Xs), .(Y, Ys), .(X, Zs))
U9(X, Xs, Y, Ys, Zs, merge_out(.(X, Xs), Ys, Zs)) → merge_out(.(X, Xs), .(Y, Ys), .(Y, Zs))
U4(X, Y, Xs, Ys, merge_out(Y1s, Y2s, Ys)) → ms_out(.(X, .(Y, Xs)), Ys)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
MS_IN(.(X, .(Y, Xs)), Ys) → U11(X, Y, Xs, Ys, split_in(.(X, .(Y, Xs)), X1s, X2s))
MS_IN(.(X, .(Y, Xs)), Ys) → SPLIT_IN(.(X, .(Y, Xs)), X1s, X2s)
SPLIT_IN(.(X, Xs), .(X, Ys), Zs) → U51(X, Xs, Ys, Zs, split_in(Xs, Zs, Ys))
SPLIT_IN(.(X, Xs), .(X, Ys), Zs) → SPLIT_IN(Xs, Zs, Ys)
U11(X, Y, Xs, Ys, split_out(.(X, .(Y, Xs)), X1s, X2s)) → U21(X, Y, Xs, Ys, X2s, ms_in(X1s, Y1s))
U11(X, Y, Xs, Ys, split_out(.(X, .(Y, Xs)), X1s, X2s)) → MS_IN(X1s, Y1s)
U21(X, Y, Xs, Ys, X2s, ms_out(X1s, Y1s)) → U31(X, Y, Xs, Ys, Y1s, ms_in(X2s, Y2s))
U21(X, Y, Xs, Ys, X2s, ms_out(X1s, Y1s)) → MS_IN(X2s, Y2s)
U31(X, Y, Xs, Ys, Y1s, ms_out(X2s, Y2s)) → U41(X, Y, Xs, Ys, merge_in(Y1s, Y2s, Ys))
U31(X, Y, Xs, Ys, Y1s, ms_out(X2s, Y2s)) → MERGE_IN(Y1s, Y2s, Ys)
MERGE_IN(.(X, Xs), .(Y, Ys), .(Y, Zs)) → U81(X, Xs, Y, Ys, Zs, less_in(Y, X))
MERGE_IN(.(X, Xs), .(Y, Ys), .(Y, Zs)) → LESS_IN(Y, X)
LESS_IN(s(X), s(Y)) → U101(X, Y, less_in(X, Y))
LESS_IN(s(X), s(Y)) → LESS_IN(X, Y)
U81(X, Xs, Y, Ys, Zs, less_out(Y, X)) → U91(X, Xs, Y, Ys, Zs, merge_in(.(X, Xs), Ys, Zs))
U81(X, Xs, Y, Ys, Zs, less_out(Y, X)) → MERGE_IN(.(X, Xs), Ys, Zs)
MERGE_IN(.(X, Xs), .(Y, Ys), .(X, Zs)) → U61(X, Xs, Y, Ys, Zs, less_in(X, s(Y)))
MERGE_IN(.(X, Xs), .(Y, Ys), .(X, Zs)) → LESS_IN(X, s(Y))
U61(X, Xs, Y, Ys, Zs, less_out(X, s(Y))) → U71(X, Xs, Y, Ys, Zs, merge_in(Xs, .(Y, Ys), Zs))
U61(X, Xs, Y, Ys, Zs, less_out(X, s(Y))) → MERGE_IN(Xs, .(Y, Ys), Zs)
ms_in(.(X, .(Y, Xs)), Ys) → U1(X, Y, Xs, Ys, split_in(.(X, .(Y, Xs)), X1s, X2s))
split_in(.(X, Xs), .(X, Ys), Zs) → U5(X, Xs, Ys, Zs, split_in(Xs, Zs, Ys))
split_in([], [], []) → split_out([], [], [])
U5(X, Xs, Ys, Zs, split_out(Xs, Zs, Ys)) → split_out(.(X, Xs), .(X, Ys), Zs)
U1(X, Y, Xs, Ys, split_out(.(X, .(Y, Xs)), X1s, X2s)) → U2(X, Y, Xs, Ys, X2s, ms_in(X1s, Y1s))
ms_in(.(X, []), .(X, [])) → ms_out(.(X, []), .(X, []))
ms_in([], []) → ms_out([], [])
U2(X, Y, Xs, Ys, X2s, ms_out(X1s, Y1s)) → U3(X, Y, Xs, Ys, Y1s, ms_in(X2s, Y2s))
U3(X, Y, Xs, Ys, Y1s, ms_out(X2s, Y2s)) → U4(X, Y, Xs, Ys, merge_in(Y1s, Y2s, Ys))
merge_in(.(X, Xs), .(Y, Ys), .(Y, Zs)) → U8(X, Xs, Y, Ys, Zs, less_in(Y, X))
less_in(s(X), s(Y)) → U10(X, Y, less_in(X, Y))
less_in(0, s(X)) → less_out(0, s(X))
U10(X, Y, less_out(X, Y)) → less_out(s(X), s(Y))
U8(X, Xs, Y, Ys, Zs, less_out(Y, X)) → U9(X, Xs, Y, Ys, Zs, merge_in(.(X, Xs), Ys, Zs))
merge_in(.(X, Xs), .(Y, Ys), .(X, Zs)) → U6(X, Xs, Y, Ys, Zs, less_in(X, s(Y)))
U6(X, Xs, Y, Ys, Zs, less_out(X, s(Y))) → U7(X, Xs, Y, Ys, Zs, merge_in(Xs, .(Y, Ys), Zs))
merge_in(Xs, [], Xs) → merge_out(Xs, [], Xs)
merge_in([], Xs, Xs) → merge_out([], Xs, Xs)
U7(X, Xs, Y, Ys, Zs, merge_out(Xs, .(Y, Ys), Zs)) → merge_out(.(X, Xs), .(Y, Ys), .(X, Zs))
U9(X, Xs, Y, Ys, Zs, merge_out(.(X, Xs), Ys, Zs)) → merge_out(.(X, Xs), .(Y, Ys), .(Y, Zs))
U4(X, Y, Xs, Ys, merge_out(Y1s, Y2s, Ys)) → ms_out(.(X, .(Y, Xs)), Ys)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDP
↳ PiDP
LESS_IN(s(X), s(Y)) → LESS_IN(X, Y)
ms_in(.(X, .(Y, Xs)), Ys) → U1(X, Y, Xs, Ys, split_in(.(X, .(Y, Xs)), X1s, X2s))
split_in(.(X, Xs), .(X, Ys), Zs) → U5(X, Xs, Ys, Zs, split_in(Xs, Zs, Ys))
split_in([], [], []) → split_out([], [], [])
U5(X, Xs, Ys, Zs, split_out(Xs, Zs, Ys)) → split_out(.(X, Xs), .(X, Ys), Zs)
U1(X, Y, Xs, Ys, split_out(.(X, .(Y, Xs)), X1s, X2s)) → U2(X, Y, Xs, Ys, X2s, ms_in(X1s, Y1s))
ms_in(.(X, []), .(X, [])) → ms_out(.(X, []), .(X, []))
ms_in([], []) → ms_out([], [])
U2(X, Y, Xs, Ys, X2s, ms_out(X1s, Y1s)) → U3(X, Y, Xs, Ys, Y1s, ms_in(X2s, Y2s))
U3(X, Y, Xs, Ys, Y1s, ms_out(X2s, Y2s)) → U4(X, Y, Xs, Ys, merge_in(Y1s, Y2s, Ys))
merge_in(.(X, Xs), .(Y, Ys), .(Y, Zs)) → U8(X, Xs, Y, Ys, Zs, less_in(Y, X))
less_in(s(X), s(Y)) → U10(X, Y, less_in(X, Y))
less_in(0, s(X)) → less_out(0, s(X))
U10(X, Y, less_out(X, Y)) → less_out(s(X), s(Y))
U8(X, Xs, Y, Ys, Zs, less_out(Y, X)) → U9(X, Xs, Y, Ys, Zs, merge_in(.(X, Xs), Ys, Zs))
merge_in(.(X, Xs), .(Y, Ys), .(X, Zs)) → U6(X, Xs, Y, Ys, Zs, less_in(X, s(Y)))
U6(X, Xs, Y, Ys, Zs, less_out(X, s(Y))) → U7(X, Xs, Y, Ys, Zs, merge_in(Xs, .(Y, Ys), Zs))
merge_in(Xs, [], Xs) → merge_out(Xs, [], Xs)
merge_in([], Xs, Xs) → merge_out([], Xs, Xs)
U7(X, Xs, Y, Ys, Zs, merge_out(Xs, .(Y, Ys), Zs)) → merge_out(.(X, Xs), .(Y, Ys), .(X, Zs))
U9(X, Xs, Y, Ys, Zs, merge_out(.(X, Xs), Ys, Zs)) → merge_out(.(X, Xs), .(Y, Ys), .(Y, Zs))
U4(X, Y, Xs, Ys, merge_out(Y1s, Y2s, Ys)) → ms_out(.(X, .(Y, Xs)), Ys)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
↳ PiDP
↳ PiDP
LESS_IN(s(X), s(Y)) → LESS_IN(X, Y)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ NonTerminationProof
↳ PiDP
↳ PiDP
↳ PiDP
LESS_IN → LESS_IN
LESS_IN → LESS_IN
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDP
MERGE_IN(.(X, Xs), .(Y, Ys), .(X, Zs)) → U61(X, Xs, Y, Ys, Zs, less_in(X, s(Y)))
MERGE_IN(.(X, Xs), .(Y, Ys), .(Y, Zs)) → U81(X, Xs, Y, Ys, Zs, less_in(Y, X))
U61(X, Xs, Y, Ys, Zs, less_out(X, s(Y))) → MERGE_IN(Xs, .(Y, Ys), Zs)
U81(X, Xs, Y, Ys, Zs, less_out(Y, X)) → MERGE_IN(.(X, Xs), Ys, Zs)
ms_in(.(X, .(Y, Xs)), Ys) → U1(X, Y, Xs, Ys, split_in(.(X, .(Y, Xs)), X1s, X2s))
split_in(.(X, Xs), .(X, Ys), Zs) → U5(X, Xs, Ys, Zs, split_in(Xs, Zs, Ys))
split_in([], [], []) → split_out([], [], [])
U5(X, Xs, Ys, Zs, split_out(Xs, Zs, Ys)) → split_out(.(X, Xs), .(X, Ys), Zs)
U1(X, Y, Xs, Ys, split_out(.(X, .(Y, Xs)), X1s, X2s)) → U2(X, Y, Xs, Ys, X2s, ms_in(X1s, Y1s))
ms_in(.(X, []), .(X, [])) → ms_out(.(X, []), .(X, []))
ms_in([], []) → ms_out([], [])
U2(X, Y, Xs, Ys, X2s, ms_out(X1s, Y1s)) → U3(X, Y, Xs, Ys, Y1s, ms_in(X2s, Y2s))
U3(X, Y, Xs, Ys, Y1s, ms_out(X2s, Y2s)) → U4(X, Y, Xs, Ys, merge_in(Y1s, Y2s, Ys))
merge_in(.(X, Xs), .(Y, Ys), .(Y, Zs)) → U8(X, Xs, Y, Ys, Zs, less_in(Y, X))
less_in(s(X), s(Y)) → U10(X, Y, less_in(X, Y))
less_in(0, s(X)) → less_out(0, s(X))
U10(X, Y, less_out(X, Y)) → less_out(s(X), s(Y))
U8(X, Xs, Y, Ys, Zs, less_out(Y, X)) → U9(X, Xs, Y, Ys, Zs, merge_in(.(X, Xs), Ys, Zs))
merge_in(.(X, Xs), .(Y, Ys), .(X, Zs)) → U6(X, Xs, Y, Ys, Zs, less_in(X, s(Y)))
U6(X, Xs, Y, Ys, Zs, less_out(X, s(Y))) → U7(X, Xs, Y, Ys, Zs, merge_in(Xs, .(Y, Ys), Zs))
merge_in(Xs, [], Xs) → merge_out(Xs, [], Xs)
merge_in([], Xs, Xs) → merge_out([], Xs, Xs)
U7(X, Xs, Y, Ys, Zs, merge_out(Xs, .(Y, Ys), Zs)) → merge_out(.(X, Xs), .(Y, Ys), .(X, Zs))
U9(X, Xs, Y, Ys, Zs, merge_out(.(X, Xs), Ys, Zs)) → merge_out(.(X, Xs), .(Y, Ys), .(Y, Zs))
U4(X, Y, Xs, Ys, merge_out(Y1s, Y2s, Ys)) → ms_out(.(X, .(Y, Xs)), Ys)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
↳ PiDP
MERGE_IN(.(X, Xs), .(Y, Ys), .(X, Zs)) → U61(X, Xs, Y, Ys, Zs, less_in(X, s(Y)))
MERGE_IN(.(X, Xs), .(Y, Ys), .(Y, Zs)) → U81(X, Xs, Y, Ys, Zs, less_in(Y, X))
U61(X, Xs, Y, Ys, Zs, less_out(X, s(Y))) → MERGE_IN(Xs, .(Y, Ys), Zs)
U81(X, Xs, Y, Ys, Zs, less_out(Y, X)) → MERGE_IN(.(X, Xs), Ys, Zs)
less_in(s(X), s(Y)) → U10(X, Y, less_in(X, Y))
less_in(0, s(X)) → less_out(0, s(X))
U10(X, Y, less_out(X, Y)) → less_out(s(X), s(Y))
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ PiDP
↳ PiDP
U61(less_out(X)) → MERGE_IN
U81(less_out(Y)) → MERGE_IN
MERGE_IN → U81(less_in)
MERGE_IN → U61(less_in)
less_in → U10(less_in)
less_in → less_out(0)
U10(less_out(X)) → less_out(s(X))
less_in
U10(x0)
MERGE_IN → U61(less_out(0))
MERGE_IN → U61(U10(less_in))
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ PiDP
↳ PiDP
MERGE_IN → U61(less_out(0))
U61(less_out(X)) → MERGE_IN
MERGE_IN → U61(U10(less_in))
MERGE_IN → U81(less_in)
U81(less_out(Y)) → MERGE_IN
less_in → U10(less_in)
less_in → less_out(0)
U10(less_out(X)) → less_out(s(X))
less_in
U10(x0)
MERGE_IN → U81(less_out(0))
MERGE_IN → U81(U10(less_in))
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ NonTerminationProof
↳ PiDP
↳ PiDP
U61(less_out(X)) → MERGE_IN
MERGE_IN → U61(less_out(0))
MERGE_IN → U61(U10(less_in))
MERGE_IN → U81(less_out(0))
MERGE_IN → U81(U10(less_in))
U81(less_out(Y)) → MERGE_IN
less_in → U10(less_in)
less_in → less_out(0)
U10(less_out(X)) → less_out(s(X))
less_in
U10(x0)
U61(less_out(X)) → MERGE_IN
MERGE_IN → U61(less_out(0))
MERGE_IN → U61(U10(less_in))
MERGE_IN → U81(less_out(0))
MERGE_IN → U81(U10(less_in))
U81(less_out(Y)) → MERGE_IN
less_in → U10(less_in)
less_in → less_out(0)
U10(less_out(X)) → less_out(s(X))
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
SPLIT_IN(.(X, Xs), .(X, Ys), Zs) → SPLIT_IN(Xs, Zs, Ys)
ms_in(.(X, .(Y, Xs)), Ys) → U1(X, Y, Xs, Ys, split_in(.(X, .(Y, Xs)), X1s, X2s))
split_in(.(X, Xs), .(X, Ys), Zs) → U5(X, Xs, Ys, Zs, split_in(Xs, Zs, Ys))
split_in([], [], []) → split_out([], [], [])
U5(X, Xs, Ys, Zs, split_out(Xs, Zs, Ys)) → split_out(.(X, Xs), .(X, Ys), Zs)
U1(X, Y, Xs, Ys, split_out(.(X, .(Y, Xs)), X1s, X2s)) → U2(X, Y, Xs, Ys, X2s, ms_in(X1s, Y1s))
ms_in(.(X, []), .(X, [])) → ms_out(.(X, []), .(X, []))
ms_in([], []) → ms_out([], [])
U2(X, Y, Xs, Ys, X2s, ms_out(X1s, Y1s)) → U3(X, Y, Xs, Ys, Y1s, ms_in(X2s, Y2s))
U3(X, Y, Xs, Ys, Y1s, ms_out(X2s, Y2s)) → U4(X, Y, Xs, Ys, merge_in(Y1s, Y2s, Ys))
merge_in(.(X, Xs), .(Y, Ys), .(Y, Zs)) → U8(X, Xs, Y, Ys, Zs, less_in(Y, X))
less_in(s(X), s(Y)) → U10(X, Y, less_in(X, Y))
less_in(0, s(X)) → less_out(0, s(X))
U10(X, Y, less_out(X, Y)) → less_out(s(X), s(Y))
U8(X, Xs, Y, Ys, Zs, less_out(Y, X)) → U9(X, Xs, Y, Ys, Zs, merge_in(.(X, Xs), Ys, Zs))
merge_in(.(X, Xs), .(Y, Ys), .(X, Zs)) → U6(X, Xs, Y, Ys, Zs, less_in(X, s(Y)))
U6(X, Xs, Y, Ys, Zs, less_out(X, s(Y))) → U7(X, Xs, Y, Ys, Zs, merge_in(Xs, .(Y, Ys), Zs))
merge_in(Xs, [], Xs) → merge_out(Xs, [], Xs)
merge_in([], Xs, Xs) → merge_out([], Xs, Xs)
U7(X, Xs, Y, Ys, Zs, merge_out(Xs, .(Y, Ys), Zs)) → merge_out(.(X, Xs), .(Y, Ys), .(X, Zs))
U9(X, Xs, Y, Ys, Zs, merge_out(.(X, Xs), Ys, Zs)) → merge_out(.(X, Xs), .(Y, Ys), .(Y, Zs))
U4(X, Y, Xs, Ys, merge_out(Y1s, Y2s, Ys)) → ms_out(.(X, .(Y, Xs)), Ys)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
SPLIT_IN(.(X, Xs), .(X, Ys), Zs) → SPLIT_IN(Xs, Zs, Ys)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ NonTerminationProof
↳ PiDP
SPLIT_IN → SPLIT_IN
SPLIT_IN → SPLIT_IN
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDPToQDPProof
U11(X, Y, Xs, Ys, split_out(.(X, .(Y, Xs)), X1s, X2s)) → U21(X, Y, Xs, Ys, X2s, ms_in(X1s, Y1s))
U11(X, Y, Xs, Ys, split_out(.(X, .(Y, Xs)), X1s, X2s)) → MS_IN(X1s, Y1s)
MS_IN(.(X, .(Y, Xs)), Ys) → U11(X, Y, Xs, Ys, split_in(.(X, .(Y, Xs)), X1s, X2s))
U21(X, Y, Xs, Ys, X2s, ms_out(X1s, Y1s)) → MS_IN(X2s, Y2s)
ms_in(.(X, .(Y, Xs)), Ys) → U1(X, Y, Xs, Ys, split_in(.(X, .(Y, Xs)), X1s, X2s))
split_in(.(X, Xs), .(X, Ys), Zs) → U5(X, Xs, Ys, Zs, split_in(Xs, Zs, Ys))
split_in([], [], []) → split_out([], [], [])
U5(X, Xs, Ys, Zs, split_out(Xs, Zs, Ys)) → split_out(.(X, Xs), .(X, Ys), Zs)
U1(X, Y, Xs, Ys, split_out(.(X, .(Y, Xs)), X1s, X2s)) → U2(X, Y, Xs, Ys, X2s, ms_in(X1s, Y1s))
ms_in(.(X, []), .(X, [])) → ms_out(.(X, []), .(X, []))
ms_in([], []) → ms_out([], [])
U2(X, Y, Xs, Ys, X2s, ms_out(X1s, Y1s)) → U3(X, Y, Xs, Ys, Y1s, ms_in(X2s, Y2s))
U3(X, Y, Xs, Ys, Y1s, ms_out(X2s, Y2s)) → U4(X, Y, Xs, Ys, merge_in(Y1s, Y2s, Ys))
merge_in(.(X, Xs), .(Y, Ys), .(Y, Zs)) → U8(X, Xs, Y, Ys, Zs, less_in(Y, X))
less_in(s(X), s(Y)) → U10(X, Y, less_in(X, Y))
less_in(0, s(X)) → less_out(0, s(X))
U10(X, Y, less_out(X, Y)) → less_out(s(X), s(Y))
U8(X, Xs, Y, Ys, Zs, less_out(Y, X)) → U9(X, Xs, Y, Ys, Zs, merge_in(.(X, Xs), Ys, Zs))
merge_in(.(X, Xs), .(Y, Ys), .(X, Zs)) → U6(X, Xs, Y, Ys, Zs, less_in(X, s(Y)))
U6(X, Xs, Y, Ys, Zs, less_out(X, s(Y))) → U7(X, Xs, Y, Ys, Zs, merge_in(Xs, .(Y, Ys), Zs))
merge_in(Xs, [], Xs) → merge_out(Xs, [], Xs)
merge_in([], Xs, Xs) → merge_out([], Xs, Xs)
U7(X, Xs, Y, Ys, Zs, merge_out(Xs, .(Y, Ys), Zs)) → merge_out(.(X, Xs), .(Y, Ys), .(X, Zs))
U9(X, Xs, Y, Ys, Zs, merge_out(.(X, Xs), Ys, Zs)) → merge_out(.(X, Xs), .(Y, Ys), .(Y, Zs))
U4(X, Y, Xs, Ys, merge_out(Y1s, Y2s, Ys)) → ms_out(.(X, .(Y, Xs)), Ys)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
U21(ms_out) → MS_IN
U11(split_out) → U21(ms_in)
MS_IN → U11(split_in)
U11(split_out) → MS_IN
ms_in → U1(split_in)
split_in → U5(split_in)
split_in → split_out
U5(split_out) → split_out
U1(split_out) → U2(ms_in)
ms_in → ms_out
U2(ms_out) → U3(ms_in)
U3(ms_out) → U4(merge_in)
merge_in → U8(less_in)
less_in → U10(less_in)
less_in → less_out(0)
U10(less_out(X)) → less_out(s(X))
U8(less_out(Y)) → U9(merge_in)
merge_in → U6(less_in)
U6(less_out(X)) → U7(merge_in)
merge_in → merge_out
U7(merge_out) → merge_out
U9(merge_out) → merge_out
U4(merge_out) → ms_out
ms_in
split_in
U5(x0)
U1(x0)
U2(x0)
U3(x0)
merge_in
less_in
U10(x0)
U8(x0)
U6(x0)
U7(x0)
U9(x0)
U4(x0)
U11(split_out) → U21(U1(split_in))
U11(split_out) → U21(ms_out)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
U11(split_out) → U21(U1(split_in))
U21(ms_out) → MS_IN
U11(split_out) → MS_IN
MS_IN → U11(split_in)
U11(split_out) → U21(ms_out)
ms_in → U1(split_in)
split_in → U5(split_in)
split_in → split_out
U5(split_out) → split_out
U1(split_out) → U2(ms_in)
ms_in → ms_out
U2(ms_out) → U3(ms_in)
U3(ms_out) → U4(merge_in)
merge_in → U8(less_in)
less_in → U10(less_in)
less_in → less_out(0)
U10(less_out(X)) → less_out(s(X))
U8(less_out(Y)) → U9(merge_in)
merge_in → U6(less_in)
U6(less_out(X)) → U7(merge_in)
merge_in → merge_out
U7(merge_out) → merge_out
U9(merge_out) → merge_out
U4(merge_out) → ms_out
ms_in
split_in
U5(x0)
U1(x0)
U2(x0)
U3(x0)
merge_in
less_in
U10(x0)
U8(x0)
U6(x0)
U7(x0)
U9(x0)
U4(x0)
MS_IN → U11(U5(split_in))
MS_IN → U11(split_out)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ NonTerminationProof
U11(split_out) → U21(U1(split_in))
MS_IN → U11(split_out)
U21(ms_out) → MS_IN
U11(split_out) → MS_IN
MS_IN → U11(U5(split_in))
U11(split_out) → U21(ms_out)
ms_in → U1(split_in)
split_in → U5(split_in)
split_in → split_out
U5(split_out) → split_out
U1(split_out) → U2(ms_in)
ms_in → ms_out
U2(ms_out) → U3(ms_in)
U3(ms_out) → U4(merge_in)
merge_in → U8(less_in)
less_in → U10(less_in)
less_in → less_out(0)
U10(less_out(X)) → less_out(s(X))
U8(less_out(Y)) → U9(merge_in)
merge_in → U6(less_in)
U6(less_out(X)) → U7(merge_in)
merge_in → merge_out
U7(merge_out) → merge_out
U9(merge_out) → merge_out
U4(merge_out) → ms_out
ms_in
split_in
U5(x0)
U1(x0)
U2(x0)
U3(x0)
merge_in
less_in
U10(x0)
U8(x0)
U6(x0)
U7(x0)
U9(x0)
U4(x0)
U11(split_out) → U21(U1(split_in))
MS_IN → U11(split_out)
U21(ms_out) → MS_IN
U11(split_out) → MS_IN
MS_IN → U11(U5(split_in))
U11(split_out) → U21(ms_out)
ms_in → U1(split_in)
split_in → U5(split_in)
split_in → split_out
U5(split_out) → split_out
U1(split_out) → U2(ms_in)
ms_in → ms_out
U2(ms_out) → U3(ms_in)
U3(ms_out) → U4(merge_in)
merge_in → U8(less_in)
less_in → U10(less_in)
less_in → less_out(0)
U10(less_out(X)) → less_out(s(X))
U8(less_out(Y)) → U9(merge_in)
merge_in → U6(less_in)
U6(less_out(X)) → U7(merge_in)
merge_in → merge_out
U7(merge_out) → merge_out
U9(merge_out) → merge_out
U4(merge_out) → ms_out